package org.example;

/**
 * 装饰者抽象类（Decorator）
 * 持有一个被装饰对象的引用，并实现与被装饰者相同的接口
 */
public abstract class CoffeeDecorator implements Coffee {
    // 被装饰的咖啡对象
    protected Coffee decoratedCoffee;
    
    /**
     * 构造函数
     * @param coffee 要装饰的咖啡对象
     */
    public CoffeeDecorator(Coffee coffee) {
        this.decoratedCoffee = coffee;
    }
    
    @Override
    public String getDescription() {
        // 默认返回被装饰者的描述
        return decoratedCoffee.getDescription();
    }
    
    @Override
    public double getCost() {
        // 默认返回被装饰者的价格
        return decoratedCoffee.getCost();
    }
} 